package com.ruyuan2020.im.design.mementopattern.nouse;

import java.util.Stack;

public class TextDocument {
    private String content;
    private final Stack<String> history; // 直接在文档类中管理历史记录

    public TextDocument() {
        this.content = "";
        this.history = new Stack<>();
        // 初始状态也加入历史记录，方便演示
        history.push(content);
    }

    public void setContent(String content) {
        // 在修改内容之前，先将当前内容保存到历史记录中
        this.history.push(this.content);
        this.content = content;
    }

    public String getContent() {
        return content;
    }

    // 撤销功能实现，直接从历史记录中取出上一个状态
    public void undo() {
        if (!history.isEmpty()) {
            // 弹出当前状态，因为要回退到前一个状态
            history.pop();
            // 如果历史记录为空，说明已经回退到最初状态
            if (history.isEmpty()) {
                this.content = "";
            } else {
                // 否则，将前一个状态设置为当前内容
                this.content = history.peek();
            }
        }
    }
}
